A multi-level NAND type flash memory in which each memory cell can store data consisting of 2 bits or more has been known. Each of 2 or more threshold levels (threshold potentials) set in the memory cells is associated with the data consisting of 2 bits or more.
After data is written in the flash memory as a write sequence, a verify operation of verifying whether predetermined data has been written is executed. The verify operation is executed by determining a given potential level as a criterion and judging whether a threshold level of a memory cell having data written therein is not lower than the predetermined level.
For example, if the threshold level of the memory cell having the data written therein is present at a predetermined level (a threshold distribution) associated with the data, a result of the verify operation in writing is determined to be a success, and the writing into this memory cell is finished. Further, if the threshold level of the memory cell is not present at the predetermined level associated with the data that should be written, a result of the verify operation is determined to be a failure, and the writing into this memory cell is continued.
However, after writing the data or during the verify operation, the threshold level of the memory cell having the successful result of the verify operation fluctuates due to unevenness of characteristics of the memory cells or mutual interference between the cells adjacent to each other. As a result, the threshold level of this memory cell does not fall into the predetermined threshold level (the threshold distribution) associated with the data that should be stored in some cases.
Therefore, it is difficult to detect whether the memory cell having the successful result of the verify operation is truly present in the threshold level range associated with the data that should be stored.
As a result, an erroneous operation of the flash memory, e.g., inexecution of reading data might occur due to a failure in writing data.